home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 November: Tool Chest / Dev.CD Nov 00 TC Disk 1.toast / Sample Code / Archive / Graphics / QuickDraw GX / GX->PostScript Sample / GXToPostScript / Imaging Engine / IEResources.r < prev    next >
Encoding:
C/C++ Source or Header  |  2000-09-28  |  12.0 KB  |  341 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        IEResources.r
  3.  
  4.      Contains:    QuickDraw GX to PostScript conversion code.
  5.                          this file contains the PostScript resources of the PostScript imaging engine
  6.  
  7.      Version:    Technology:    Quickdraw GX 1.1.x
  8.       
  9.      Copyright:    © 1990-1998 by Apple Computer, Inc., all rights reserved.
  10. */
  11.  
  12. #include <Types.r>
  13. #include <DatabaseAccess.r>
  14.  
  15. #include "GXToPSBuildConfig.h"
  16. #include "PSIEResources.h"
  17.  
  18. #if USECONTROLRESOURCES
  19. resource kControlResType (kControlResId, sysHeap, purgeable) {
  20.  
  21.     "MobyDict",        // dict name
  22.     0x00010000,        // version
  23.     0,                        // revision
  24.     25 * 1024,        // vmusage
  25.  
  26.     {
  27.         kProcCopyRightNoticeID, dumpwidestring;
  28.         kStartProcId,                     dumpwidestring;
  29.         kStartProcIdL1+1,                dumpwidestring;
  30.         kStartProcIdL1+2,                dumpwidestring;
  31.         kStartProcIdL1+3,                dumpwidestring;
  32.         kStartProcIdL1+4,                dumpwidestring;
  33.         kStartProcIdL1+5,                dumpwidestring;
  34.         kStartProcIDL1+6,                dumpwidestring;
  35.         kStartProcIDL1+7,                dumpwidestring;
  36.         kStartProcIDL1+8,                dumpwidestring;
  37.         kLastProcID,                        dumpwidestring;
  38.     };
  39. };
  40.  
  41.  
  42.  
  43. resource kControlResType (kControlResIdPortable, sysHeap, purgeable) {
  44.  
  45.     "MobyDict Portable",        // dict name
  46.     0x00010000,                            // version
  47.     0,                                            // revision
  48.     30 * 1024,                            // vmusage
  49.  
  50.     {
  51.         kProcCopyRightNoticeID, dumpwidestring;
  52.         kRGBPatchProcID,                dumpwidestring;                // cexec patch for the RGB to Gray
  53.         kStartProcId,                     dumpwidestring;
  54.         kLevel2ColorProcID,            dumpwidestring;                // Portable color requires some of the same stuff as level-2 for response functions.
  55.         kPortableColorProcID,        dumpwidestring;
  56.         kStartProcIdL1+1,                dumpwidestring;
  57.         kStartProcIdL1+2,                dumpwidestring;
  58.         kStartProcIdL1+3,                dumpwidestring;
  59.         kStartProcIdL1+4,                dumpwidestring;
  60.         kStartProcIdL1+5,                dumpwidestring;
  61.         kStartProcIDL1+6,                dumpwidestring;
  62.         kStartProcIDL1+7,                dumpwidestring;
  63.         kStartProcIDL1+8,                dumpwidestring;
  64.         kLastProcID,                        dumpwidestring;
  65.     };
  66. };
  67.  
  68.  
  69. resource kControlResType (kControlResIDL2Color, sysHeap, purgeable) {
  70.  
  71.     "MobyDict Level2 Color",    // dict name
  72.     0x00010000,                                // version
  73.     0,                                                // revision
  74.     25 * 1024,                                // vmusage
  75.  
  76.     {
  77.         kProcCopyRightNoticeID, dumpwidestring;
  78.         kStartProcId,                     dumpwidestring;
  79.         kLevel2ColorProcID,            dumpwidestring;
  80.         kStartProcIdL1+1,                dumpwidestring;
  81.         kStartProcIdL1+2,                dumpwidestring;
  82.         kStartProcIdL1+3,                dumpwidestring;
  83.         kStartProcIdL1+4,                dumpwidestring;
  84.         kStartProcIdL1+5,                dumpwidestring;
  85.         kStartProcIDL1+6,                dumpwidestring;
  86.         kStartProcIDL1+7,                dumpwidestring;
  87.         kStartProcIDL1+8,                dumpwidestring;
  88.         kLastProcID,                        dumpwidestring;
  89.     };
  90. };
  91.  
  92.  
  93. #endif
  94.  
  95.  
  96.  
  97.  
  98. resource 'wstr' (kProcCopyRightNoticeID, sysHeap, purgeable) {
  99.  
  100. #if DEBUGLEVEL>1
  101.     "%-\n"
  102.     "%- QuickDraw GX PostScript Imaging Engine Procedure Set\n"
  103.     "%- Copyright © Apple Computer, Inc. 1991, 1992, 1993, 1994, 1995\n"
  104.     "%- All rights reserved\n"
  105.     "%-\n"
  106. #endif
  107.     
  108.  
  109.     /* Old app compatability LaserPrep definitions - into userdict */
  110.     /* the name 'gxPageSave' must be kept in sync with PostScript driver */
  111.     /* The bu operator makes sure the CTM is maintained to increase compatibility */
  112.     #if DEBUGLEVEL>1
  113.         "%- Definitions from LaserPrep for compatability\n"
  114.     #endif
  115.     "userdict begin\n"
  116.         
  117.         "/bu {Moby /PortMapping get aload pop matrix currentmatrix aload pop userdict begin gxPageSave end restore    matrix astore setmatrix    Moby /PortMapping get astore pop} def\n"    
  118.         "/bn {userdict begin /gxPageSave save store end} def\n"    /* using store assumes driver did the page save */
  119.  
  120.         "/T true def\n"            /* some apps even are so bold as to assume these are defined */
  121.         "/F false def\n"
  122.         "/por true def\n"        /* Some apps expects looks at this to see if portrait or landscape, we'll always landscape*/
  123.     
  124.         /******
  125.             Make an MD, some apps expect it.  Make it have 30 places free
  126.             because we are going to have it on the top of the dictionary stack
  127.             when synonyms are being executed.  The reason we need 30 places
  128.             is becuase some apps emit postscript that does "defs"
  129.             without setting the current dictionary to their own  - they are assuming
  130.             the current dictionary has free space in it. The number
  131.             30 comes from the fact that in the LW8 driver there are 30 free spots
  132.             in md.
  133.         ******/
  134.         "/md 30 dict def\n"
  135.         
  136.     "end\n"
  137.     
  138.     "userdict begin /Moby 225 dict def end    \n"                /* make dictionary for Imaging Engine proc-set */
  139.     "userdict /Moby get begin\n"                                            /* put it on top of dict stack */
  140.     
  141.     /* packing procedures on and off */
  142.     
  143.     "/PackOn  {systemdict /setpacking known {true setpacking} if} def\n"
  144.     "/PackOff    {systemdict /setpacking known {false setpacking} if} def\n"
  145.  
  146.     
  147.     /* Abbreviations */
  148.     
  149.     "/Mt     /moveto load def\n"
  150.     "/Rm    /rmoveto load def\n"
  151.     "/Rl    /rlineto load def\n"
  152.     "/Cp    /closepath load def\n"
  153.     "/Rc    /rcurveto load def\n"
  154.     "/Lt    /lineto load def\n"
  155.     "/Ct    /curveto load def\n"
  156.     "/St    /stroke load def\n"
  157.     "/Fi    /fill load def\n"
  158.     "/Eo    /eofill load def\n"
  159.     
  160.     /* Language level check */
  161.     "systemdict /languagelevel known not {/languagelevel 1 def} if\n"
  162.  
  163.     /* turn packing on for download of procset */
  164.     "PackOn\n"                    
  165. };
  166.  
  167. resource 'wstr' (kLastProcID, sysHeap, purgeable) {
  168.     #if DEBUGLEVEL>1
  169.         "%- Remove Moby Dict from dictionary stack\n"
  170.     #endif
  171.     "PackOff\n"                /* leave packing off for now, breaks Multi-Master fonts otherwise */
  172.     "end\n"
  173. };
  174.  
  175.  
  176. #ifdef USERGBPATCH
  177. // This patch is for old level-1 68k printers,
  178. //        probably not worth spending the time now.
  179.     resource 'wstr' (kRGBPatchProcID, sysHeap, purgeable) {
  180.  
  181.         #include "RGBBufferToGray.rsrc"
  182.  
  183.     };
  184. #endif
  185.  
  186. resource 'STR#' (kScriptResID, sysHeap, purgeable) {
  187.     {
  188.         /* kOurDictOnStack    */    "\n userdict /Moby get begin\n";
  189.         /* kOurDictOffStack */    "\n end\n";
  190.         #if DEBUGLEVEL>1        
  191.             /* kInitcomment            */    "%- %s Initial Printer State:\n";
  192.         #else
  193.                                                             "";
  194.         #endif
  195.  
  196.         /* kSetLineWidth        */    "%f setlinewidth\n";
  197.         /* kSetMiterLim            */    "%f setmiterlimit\n";
  198.         /* kSetLineCap            */    "%d setlinecap\n";
  199.         /* kSetFlat                    */    "%f setflat\n";
  200.         /* kSetLineJoin            */    "%d setlinejoin\n";
  201.         /* kFillKey                    */    "/%q ";
  202.         /* kQD2Fill                    */    "QD2Fill\n";
  203.         /* kRectPoints            */    "%p %p\n";
  204.         /* kRectFill                */    "RF\n";
  205.         /* kRectStroke            */    "RStr\n";
  206.         /* kRectPath                */    "RP\n";
  207.         /* kMoveto                    */    "%p Mt\n";
  208.         /* kRmoveto                    */    "%p Rm\n";
  209.         /* kRlineto                    */    "%p Rl\n";
  210.         /* kClosepath                */    "Cp\n";
  211.         /* kPointPath                */    "%p Pnt\n";
  212.         /* kFullPath                */    "FullPath\n";
  213.         /* kEmptyPath                */    "EmptyPath\n";
  214.         /* kShow                        */    "(%s) show\n";
  215.         /* khShow                        */    "<%h> show\n";
  216.         /* kSelectFont            */    "/%s %f SFy\n";
  217.         /* kDoPoint                    */    "%p\n";
  218.         /* kDoFixed                    */    "%f\n";
  219.         /* kDoString                */    "%s\n";
  220.         /* kDoBoolean                */    "%b\n";
  221.         /* kDoInt                        */    "%d\n";
  222.         /* kDoMapping                */    "%f %f %f %f %f %f %d MakMatrix\n";
  223.  
  224.         /* kKshow                        */    "/KshowAbsPos load (%s) GXkshow\n";
  225.         /* khKshow                    */    "/KshowAbsPos load <%h> GXkshow\n";
  226.         /* kKshowH                    */    "/KshowAbsPosH load (%s) GXkshow pop\n";
  227.         /* khKshowH                    */    "/KshowAbsPosH load <%h> GXkshow pop\n";
  228.         /* kKshowV                    */    "/KshowAbsPosV load (%s) GXkshow pop\n";
  229.         /* khKshowV                    */    "/KshowAbsPosV load <%h> GXkshow pop\n";
  230.         /* kAshow                        */    "(%s) CnstDltShw\n";
  231.         /* khAshow                    */    "<%h> CnstDltShw\n";
  232.         /* kKshowRH                    */    "/KshowDeltaH load (%s) GXkshow pop\n";
  233.         /* khKshowRH                */    "/KshowDeltaH load <%h> GXkshow pop\n";
  234.         /* kKshowRV                    */    "/KshowDeltaV load (%s) GXkshow pop\n";
  235.         /* khKshowRV                */    "/KshowDeltaV load <%h> GXkshow pop\n";
  236.         /* kKshowR                    */    "/KshowDelta load (%s) GXkshow\n";
  237.         /* khKshowR                    */    "/KshowDelta load <%h> GXkshow\n";
  238.  
  239.         /* kRcurveto                */    "%p %p %p Rc\n";
  240.         /* kSetRGBColor            */    "%f %f %f GXSetRGBColor\n";
  241.         /* kSetGray                    */    "%f setgray\n";
  242.         /* kSetCMYKColor        */    "%f %f %f %f setcmykcolor\n";
  243.         /* kMapCTM                    */    "%f %f %f %f %f %f %d MapCTM\n";
  244.         /* kGsave                        */    "gsave\n";
  245.         /* kQD2Grestore            */    "QD2Grestore\n";
  246.         /* kRectClip                */    "RCl\n";
  247.         /* kQD2Clip                    */    "QD2Clip\n";
  248.         /* kImage                        */    "%d %d %d %d %p %b %d DoBitmap\n";
  249.         /* kIndexedImage        */    "%d %d %d %p %b %d DoIndexedBitmap\n";
  250.         /* kIndexedBitProc    */    "{%d %d %d %p DrawIndexedBitmapStrings}\n";
  251.         /* kL2Image                    */    "%d %d %d %p %b DoLevel2ColorImage\n";
  252.         /* kMakeDashDict        */    "%b %b %b %f %f %f MakeDashDict\n";
  253.         /* kSetDash                    */    "SetDash\n";
  254.         /* kDoNull                    */    "null\n";
  255.         /* kDoPop                        */    "pop\n";
  256.         /* kSetFrame                */    "%d SetFrame\n";
  257.         /* kSetRightIsOut        */    "%b SetRightIsOut\n";
  258.         /* kSetPattern            */    "SetPat\n";
  259.         /* kMakePatDict            */    "%p %p %p %b %b MakePatternDict\n";
  260.         /* kMakeBitStrings    */    "%b %d MakeBitmapStrings\n";
  261.         /* kBitmapProc            */    "{%d %d %d %d %p DrawBitmapString}\n";
  262.         /* kMakeShapeDict        */    "%f %f %f %f /%s MakeShapeDict\n";
  263.         /* k1bitBitmap            */    "%d %d %p %b %d Do1bitBitmap\n";
  264.         /* k1bitBitmapPSRS    */    "%d %d %p %b %d %f %f %f %f %f %f %d MakMatrix Do1bitBitmap\n";    // for rasterized shapes.
  265.         /* k1bitBitmapProc    */    "{%d %d %p Draw1bitBitmapString}\n";
  266.         /* kL2BitmapProc        */    "{%d %d %d %p DoLevel2ColorImageString}\n";
  267.         /* kNewArray                */    "%d array 0\n";                                                        // Create array leve it and 0 on stack.
  268.         /* kPutFixed                */    "%f PtNx\n";                                                            // Put fixed into next array element Leaves array on stack.
  269.         /* kPutInt                    */    "%d PtNx\n";                                                            // Put integer into next array element, Leaves array on stack.
  270.         /* kMakeColorSet        */    "%d CreateColorSet\n";
  271.         /* kSetColorSet            */    "SetColorSet\n";        
  272.         /* kSetOrMode                */    "%d SetOrMode\n";
  273.         /* kMakeStyleDict        */    "MakeStyleDict\n";
  274.         /* kMakeTrDict            */    "MakeTrDict\n";
  275.  
  276.         /* k3minus1Roll                        */    "3 -1 roll\n";
  277.         /* kFaceFontName                    */    "/%q\n";
  278.         /* kFindFont                            */    "/%q findfont\n";
  279.         /* kSetBaseFont                        */    "dup SetBaseFont\n";
  280.         /* kTextFaceFont                    */    "MakeLayeredFont\n";
  281.         /* kMakeSimpleLayeredFont    */    "MakeSimpleLayeredFont\n";
  282.         /* kCurrBaseFont                    */    "CurrBaseFont\n";
  283.         /* kDoBBox                                */    "[%f %f %f %f]\n";
  284.     
  285.         /* kTangentFont            */    "%f %f %f %f SFt\n";
  286.         /* kMakeLayerDict        */    "MakeLayerDict\n";
  287.         
  288.  
  289.         /* Just Leave packing off for now, breaks Adobe stuff */
  290.         #if DEBUGLEVEL>1
  291.             /* kBeginPSSyn            */    "% PackOff  %- Begin PostScript Synonym\n";            /* turn packing off for app PostScript */
  292.             /* kEndPSSyn                */    "\n% PackOn %- End PostScript Synonym, #tags was: %d, flags: %d\n";              /* turn packing off for app PostScript */
  293.         #else
  294.             /* kBeginPSSyn            */    "";            /* turn packing off for app PostScript */
  295.             /* kEndPSSyn                */    "\n";      /* turn packing off for app PostScript */
  296.         #endif
  297.  
  298.         /* kDoSave                    */    "save\n";
  299.         /* kDoRestore                */    "\nrestore\n";
  300.  
  301.         /* kXYshow                    */    "(%s) exch xyshow\n";
  302.         /* khXYshow                    */    "<%h> exch xyshow\n";
  303.         /* kXshow                        */    "(%s) exch xshow\n";
  304.         /* khXshow                    */    "<%h> exch xshow\n";
  305.         /* kYshow                        */    "(%s) exch yshow\n";
  306.         /* khYshow                    */    "<%h> exch yshow\n";
  307.         
  308.         /* kDoScreenParams    */    "%f %f %q\n";
  309.         /* kSetHalftone            */    "%d SetHalftoneParams\n";
  310.         /* kSetDefaultScreen*/    "SetDefaultHalftone\n";
  311.         /* kDefineDefaultScreen*/    "DefineDefaultHalftone\n";
  312.         /* kFill                        */    "Fi\n";
  313.         /* kEofill                    */    "Eo\n";
  314.         /* kStroke                    */    "St\n";
  315.         /* kLineto                    */    "%p Lt\n";
  316.         /* kCurveto                    */    "%p %p %p Ct\n";
  317.         /* kRectPointsAbs        */  "%p %f %f sub %f %f sub\n";                            /* topLeft right left sub bottom top sub */
  318.         /* kMakeXYZSpace        */    "%f %f %f %f %f %f MakeXYZSpace\n";            /* white black */
  319.         /* kMakeCSDict            */    "MakeCSDict\n";                                                    /* CSA intent are input, makes a dictionary for the color space */
  320.         /* kSetColorSpace        */    "GXSetCSpace\n";
  321.         /* kSetColorF                */    "%f %f %f setcolor\n";
  322.         /* kMakeCalRGBSpace    */    "%f %f %f\n%f %f %f\n%f %f %f\n%f %f %f\n%f %f %f MakeCalibratedRGBSpace\n";        /*r g b w k */
  323.         /* kMakeResponseFunc*/    "MakeResponseFunction\n";
  324.         /* kDefineCRD                */    "%q exch /ColorRendering defineresource pop\n";  /* note, the name here will already have a slash preceeding it */
  325.         /* kUndefineCRD            */    "%q /ColorRendering undefineresource\n";
  326.         
  327.         /* knilStyleDict        */            "nilStyleDict\n";
  328.         /* kSetPortableColorSpace*/    "SetPortableColorSpace\n";
  329.         
  330.         /* kIdentityProc        */    "{}\n";
  331.         
  332.         /* kSavePortMapping    */    "PortMapping currentmatrix GridMatrix\n";
  333.         
  334.         /* kMDBegin                    */    "userdict /md get begin\n";
  335.         /* kMDEnd                        */    "end % md\n";
  336.         
  337.         /* kSetGlobalVM            */  "currentglobal %b setglobal\n";        /* set the global VM state to the boolean, leave original value on stack */
  338.         /* kRestoreGlobalVM */    "setglobal\n"    ;                                        /* Just set it to the value on the stack */
  339.     }
  340. };
  341.